<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 两个超过正整数范围的字符串a，b相加，实现一个函数，使得其可以相加，并且返回的形式是字符串
        // 需要取两个数字的每一位，进行相加，大于10，就进1，把结果保存在一个字符串中。
        // 主要思路是通过将数字转换为字符串，然后每个字符串在按位相加。
        function bigNumberAdd(number1, number2) {
            let result = "", // 保存最后结果
                carry = false; // 保留进位结果
            // 将字符串转换为数组
            number1 = number1.split("");
            number2 = number2.split("");
            // 当数组的长度都变为0，并且最终不再进位时，结束循环
            while (number1.length || number2.length || carry) {
                // 每次将最后的数字进行相加，使用~~的好处是，即使返回值为 undefined 也能转换为 0
                carry += ~~number1.pop() + ~~number2.pop();
                // 取加法结果的个位加入最终结果
                result = carry % 10 + result;
                // 判断是否需要进位，true 和 false 的值在加法中会被转换为 1 和 0
                carry = carry > 9;
            }
            // 返回最终结果
            return result;
        }
        console.log(bigNumberAdd('4121323429', '9387864269'));
    </script>
</body>

</html>